[Snowflake]ロールに付与した権限を確認する
はじめに
Snowflakeには、データベースを管理するためのGUI画面が提供されています。Snowflakeにおける権限管理の基本となるロールの管理も、まず自身のロールをSECURITYADMIN
かACCOUNTADMIN
に切り替えた上で、[アカウント]-[ロール]
に移動すれば可能です(下図)。
ただ、この画面では「ロールがどのユーザ及びロールに付与されているか」は確認できるものの、「ロールの中にどのような権限が含まれているか」を確認することができません。本エントリではその確認方法について紹介します。
SHOW GRANTSコマンドを使う
まあ、結論はこれだけなんですがね…。以前のエントリでSNOWFLAKE.INFORMATION_SCHEMA.APPLICABLE_ROLES
ビューを参照する方法を知ったものだから、てっきり同じような権限情報を格納したビューがあると思いこんで、だいぶ探してしまいました。
気を取り直して、早速コマンドを実行します。例として、弊社で実施しているSnowflakeハンズオンイベントの内容を少しだけ利用します。
確認用ロールの作成と権限付与
ロールの作成はよく使われるSYSADMIN
ロールでは実施できません。SECURITYADMIN
か、それを包含するACCOUNTADMIN
ロールである必要があります。
USE ROLE accountadmin;
例として、JUNIOR_DBA
ロールを作成し、ロールに対し作成済みのデータベースの利用(USAGE)権限を与えます。
CREATE ROLE junior_dba; GRANT USAGE ON DATABASE citibike TO ROLE junior_dba; GRANT USAGE ON DATABASE weather TO ROLE junior_dba;
ロール内の権限確認
ここで先程紹介したコマンドの出番です。作成したロールの中身を確認してみましょう。
SHOW GRANTS TO ROLE junior_dba;
以下の結果を得ました。
表示されたカラムは、それぞれ以下の意味を持ちます。
カラム名 | 意味 |
---|---|
created_on | 権限操作によって新たにレコードが作成された日時 |
privilege | 付与した権限の種類 |
granted_on | 権限付与対象の種類 |
name | 権限付与対象の名前 |
granted_to | 非権限付与対象の種類 |
grantee_name | 非権限付与対象の種類 |
grant_option | 権限は操作特権付きか |
granted_by | 権限を付与の操作を行ったロール |
読み解くと、それぞれ2つのデータベース(CITIBIKE
, WEATHER
)の使用(USAGE
)権限を、JUNIOR_DBA
ロールに特権操作なしで付与しているとわかります。
このコマンドで、ロールの設定を確認してください。